import type { AppConfig } from '@/types/app'

/**
 * 自动加载所有应用配置
 * 使用 Vite 的 import.meta.glob 功能动态导入所有应用的 index.ts
 */
export async function loadApps(): Promise<AppConfig[]> {
  // 使用 import.meta.glob 加载所有应用的 index.ts
  const appModules = import.meta.glob<{ default: AppConfig }>('../components/apps/*/index.ts', {
    eager: true
  })

  const apps: AppConfig[] = []

  // 遍历所有模块，提取应用配置
  for (const path in appModules) {
    const module = appModules[path]
    if (module.default) {
      apps.push(module.default)
    }
  }

  // 按应用 ID 排序，确保顺序一致
  return apps.sort((a, b) => a.id.localeCompare(b.id))
}

/**
 * 同步加载所有应用配置（用于需要同步初始化的场景）
 */
export function loadAppsSync(): AppConfig[] {
  const appModules = import.meta.glob<{ default: AppConfig }>('../components/apps/*/index.ts', {
    eager: true
  })

  const apps: AppConfig[] = []

  for (const path in appModules) {
    const module = appModules[path]
    if (module.default) {
      apps.push(module.default)
    }
  }

  return apps.sort((a, b) => a.id.localeCompare(b.id))
}

/**
 * 根据应用 ID 获取应用配置
 */
export function getAppById(apps: AppConfig[], id: string): AppConfig | undefined {
  return apps.find(app => app.id === id)
}

/**
 * 获取所有固定到 Dock 的应用
 */
export function getPinnedApps(apps: AppConfig[]): AppConfig[] {
  return apps.filter(app => app.pinnedToDock)
}

